home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / gcc / gccman.zoo / gcc.doc
Encoding:
Text File  |  1992-03-06  |  97.4 KB  |  2,420 lines

  1. GCC(1)                      GNU Tools                      GCC(1)
  2.  
  3. NAME
  4.      gcc, g++ - GNU project C and C++ Compiler (v2 preliminary)
  5.  
  6. SYNOPSIS
  7.      gcc [option | filename ]...
  8.      g++ [option | filename ]...
  9.  
  10. WARNING
  11.      The information in this man page is an extract from the full
  12.      documentation  of  the GNU C compiler, and is limited to the
  13.      meaning of the options.
  14.  
  15.      For complete, current documentation, refer to the Info  file
  16.      `gcc'  or  the  manual Using and Porting GNU CC (for version
  17.      2.0).   Both  are  made  from  the   Texinfo   source   file
  18.      gcc.texinfo.
  19.  
  20. DESCRIPTION
  21.      The C and C++ compilers are integrated.  Both process  input
  22.      files  through  one  or  more of four stages: preprocessing,
  23.      compilation, assembly, and linking.   Source  filename  suf-
  24.      fixes  identify  the source language, but which name you use
  25.      for the compiler governs default assumptions:
  26.  
  27.      gcc  assumes preprocessed (.i) files are  C  and  assumes  C
  28.           style linking.
  29.  
  30.      g++  assumes preprocessed (.i) files are C++ and assumes C++
  31.           style linking.
  32.  
  33.      Suffixes of source file names indicate the language and kind
  34.      of processing to be done:
  35.  
  36.      .c     C source; preprocess, compile, assemble
  37.      .C     C++ source; preprocess, compile, assemble
  38.      .cc     C++ source; preprocess, compile, assemble
  39.      .cxx     C++ source; preprocess, compile, assemble
  40.      .m     Objective-C source; preprocess, compile, assemble
  41.      .i     preprocessed C or C++; compile, assemble
  42.      .s     Assembler source; assemble
  43.      .S     Assembler source; preprocess, assemble
  44.      .h     Preprocessor file; not usually named on command line
  45.  
  46.      ??     Other (unrecognized) files passed to linker.
  47.           Common cases:
  48.      .o     Object file
  49.      .a     Archive file
  50.  
  51.      Linking is always the last stage unless you use one  of  the
  52.      -c,  -S,  or  -E  options to avoid it (or unless compilation
  53.      errors stop the whole process).  For the link stage, all  .o
  54.      files   corresponding   to   source   files,  -l  libraries,
  55.  
  56. GNU Tools            Last change: 27dec1991                     1
  57.  
  58. GCC(1)                      GNU Tools                      GCC(1)
  59.  
  60.      unrecognized filenames (including named .o object files  and
  61.      .a archives) are passed to the linker in command-line order.
  62.  
  63. OPTIONS
  64.      Options must be separate: `-dr' is quite different from  `-d
  65.      -r '.
  66.  
  67.      Most `-f' and `-W' options have two contrary  forms:  -fname
  68.      and  -fno-name  (or  -Wname  and  -Wno-name).  Only the non-
  69.      default forms are shown here.
  70.  
  71.      Here is a summary of  all  the  options,  grouped  by  type.
  72.      Explanations are in the following sections.
  73.  
  74.      Overall Options
  75.           -c -S -E -o file -pipe -v -vpath -vspec -x language
  76.  
  77.      Language Options
  78.           -ansi -fall-virtual -fcond-mismatch
  79.           -fdollars-in-identifiers -fenum-int-equiv -fno-asm
  80.           -fno-builtin -fno-strict-prototype -fsigned-bitfields
  81.           -fsigned-char -fthis-is-variable -funsigned-bitfields
  82.           -funsigned-char -fwritable-strings -traditional
  83.           -traditional-cpp -trigraphs
  84.  
  85.      Warning Options
  86.           -fsyntax-only -pedantic -pedantic-errors -w -W -Wall
  87.           -Waggregate-return -Wcast-align -Wcast-qual -Wcomment
  88.           -Wconversion -Wenum-clash -Werror -Wformat
  89.           -Wid-clash-len -Wimplicit -Wmissing-prototypes
  90.           -Wno-parentheses -Wpointer-arith -Wreturn-type -Wshadow
  91.           -Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs
  92.           -Wuninitialized -Wunused -Wwrite-strings
  93.  
  94.      Debugging Options
  95.           -a -dletters -fpretend-float -g -gdbx -gdwarf -ggdb
  96.           -gsdb -p -pg -save-temps
  97.  
  98.      Optimization Options
  99.           -fcaller-saves -fcse-follow-jumps -fdelayed-branch
  100.           -felide-constructors -fexpensive-optimizations
  101.           -ffloat-store -fforce-addr -fforce-mem -finline
  102.           -finline-functions -fkeep-inline-functions
  103.           -fmemoize-lookups -fno-default-inline -fno-defer-pop
  104.           -fno-function-cse -fomit-frame-pointer
  105.           -frerun-cse-after-loop -fschedule-insns
  106.  
  107. GNU Tools            Last change: 27dec1991                     2
  108.  
  109. GCC(1)                      GNU Tools                      GCC(1)
  110.  
  111.           -fschedule-insns2 -fstrength-reduce -fthread-jumps
  112.           -funroll-all-loops -funroll-loops -O -O2
  113.  
  114.      Preprocessor Options
  115.           -C -dD -dM -dN -Dmacro[=defn] -E -H -i file -M -MD -MM
  116.           -MMD -nostdinc -P -Umacro -undef
  117.  
  118.      Linker Options
  119.           -dynamic -llibrary -nostdlib -static
  120.  
  121.      Directory Options
  122.           -Bprefix -Idir -I- -Ldir
  123.  
  124.      Target Options
  125.           -b  machine -V version
  126.  
  127.      Machine Dependent Options
  128.           M680x0 Options
  129.           -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020
  130.           -mfpa -mnobitfield -mrtd -mshort -msoft-float
  131.  
  132.           VAX Options
  133.           -mg -mgnu -munix
  134.  
  135.           SPARC Options
  136.           -mfpu -mno-epilogue
  137.  
  138.           Convex Options
  139.           -margcount -mc1 -mc2 -mnoargcount
  140.  
  141.           AMD29K Options
  142.           -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
  143.           -mnbw -mnodw -msmall -mstack-check -muser-registers
  144.  
  145.           M88K Options
  146.           -mbig-pic -mcheck-zero-division -mhandle-large-shift
  147.           -midentify-revision -mno-check-zero-division
  148.           -mno-ocs-debug-info -mno-ocs-frame-position
  149.           -mno-optimize-arg-area -mno-underscores
  150.           -mocs-debug-info -mocs-frame-position
  151.           -moptimize-arg-area -mshort-data-num -msvr3 -msvr4
  152.           -mtrap-large-shift -muse-div-instruction
  153.           -mversion-03.00 -mwarn-passed-structs
  154.  
  155.           RS6000 Options
  156.           -mfp-in-toc -mno-fop-in-toc
  157.  
  158. GNU Tools            Last change: 27dec1991                     3
  159.  
  160. GCC(1)                      GNU Tools                      GCC(1)
  161.  
  162.           RT Options
  163.           -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
  164.           -mfull-fp-blocks -mhc-struct-return -min-line-mul
  165.           -mminimum-fp-blocks -mnohc-struct-return
  166.  
  167.           MIPS Options
  168.           -mcpu=cpu type -mips2 -mips3 -mint64 -mlong64
  169.           -mlonglong128 -mmips-as -mgas -mrnames -mno-rnames
  170.           -mgpopt -mno-gpopt -mstats -mno-stats -mmemcpy
  171.           -mno-memcpy -mno-mips-tfile -mmips-tfile -msoft-float
  172.           -mhard-float -mabicalls -mno-abicalls -mhalf-pic
  173.           -mno-half-pic -G num
  174.  
  175.      Code Generation Options
  176.           +eN -fcall-saved-reg -fcall-used-reg -ffixed-reg
  177.           -fno-common -fno-gnu-binutils -fnonnull-objects
  178.           -fpcc-struct-return -fpic -fPIC -fshared-data
  179.           -fshort-enums -fshort-double -fvolatile
  180.  
  181. OVERALL OPTIONS
  182.      -x language
  183.           Specify explicitly the language for the following input
  184.           files (rather than choosing a default based on the file
  185.           name suffix) .  This option applies  to  all  following
  186.           input  files  until  the  next  `-x'  option.  Possible
  187.           values of language are `c', `objective-c',  `c-header',
  188.           `c++',       `cpp-output',       `assembler',       and
  189.           `assembler-with-cpp'.
  190.  
  191.      -x none
  192.           Turn off any specification of a language, so that  sub-
  193.           sequent  files are handled according to their file name
  194.           suffixes (as they are if `-x'  has  not  been  used  at
  195.           all).
  196.  
  197.      If you want only some of the four stages  (preprocess,  com-
  198.      pile,  assemble,  link),  you can use `-x' (or filename suf-
  199.      fixes) to tell gcc where to start, and one  of  the  options
  200.      `-c',  `-S', or `-E' to say where gcc is to stop.  Note that
  201.      some combinations (for example, `-x cpp-output -E') instruct
  202.      gcc to do nothing at all.
  203.  
  204.      -c   Compile or assemble the source files, but do not  link.
  205.           The  compiler output is an object file corresponding to
  206.           each source file.
  207.  
  208.           By default, GCC makes the object file name for a source
  209.           file  by  replacing  the suffix `.c', `.i', `.s', etc.,
  210.           with `.o'.  Use -o to select another name.
  211.  
  212. GNU Tools            Last change: 27dec1991                     4
  213.  
  214. GCC(1)                      GNU Tools                      GCC(1)
  215.  
  216.           GCC ignores any unrecognized input files (those that do
  217.           not  require  compilation  or assembly) with the -c op-
  218.           tion.
  219.  
  220.      -S   Stop after the stage of compilation proper; do not  as-
  221.           semble.   The output is an assembler code file for each
  222.           non-assembler input file specified.
  223.  
  224.           By default, GCC makes the assembler  file  name  for  a
  225.           source  file  by replacing the suffix `.c', `.i', etc.,
  226.           with `.s'.  Use -o to select another name.
  227.  
  228.           GCC ignores any input files that don't require compila-
  229.           tion.
  230.  
  231.      -E   Stop after the preprocessing stage; do not run the com-
  232.           piler  proper.  The output is preprocessed source code,
  233.           which is sent to the standard output.
  234.  
  235.           GCC ignores input files which don't require preprocess-
  236.           ing.
  237.  
  238.      -o file
  239.            Place output in file file.  This applies regardless to
  240.           whatever sort of output GCC is producing, whether it be
  241.           an executable file, an object file, an  assembler  file
  242.           or preprocessed C code.
  243.  
  244.           Since only one output file can be  specified,  it  does
  245.           not make sense to use `-o' when compiling more than one
  246.           input file, unless you are producing an executable file
  247.           as output.
  248.  
  249.           If you do not specify `-o', the default is  to  put  an
  250.           executable   file  in  `a.out',  the  object  file  for
  251.           `source.suffix' in `source.o', its  assembler  file  in
  252.           `source.s',  and  all preprocessed C source on standard
  253.           output.
  254.  
  255.      -v   Print (on standard error output) the commands  executed
  256.           to  run the stages of compilation.  Also print the ver-
  257.           sion number of the compiler driver program and  of  the
  258.           preprocessor and the compiler proper.
  259.  
  260.      -vpath
  261.           Print (on standard error output) all attempts at  find-
  262.           ing files, tracing how the `-B', `-b', and `-V' options
  263.           interact.  Also, print the commands executed to run the
  264.           stages  of  compilation  and  version numbers, like the
  265.           `-v' option.
  266.  
  267. GNU Tools            Last change: 27dec1991                     5
  268.  
  269. GCC(1)                      GNU Tools                      GCC(1)
  270.  
  271.      -vspec
  272.           Print (on standard error output) all  spec's  processed
  273.           by  the do_spec_1 function in `gcc.c'.  Also, print the
  274.           commands executed to run the stages of compilation  and
  275.           version numbers, like the `-v' option.
  276.  
  277.      -pipe
  278.           Use pipes rather than temporary files for communication
  279.           between  the various stages of compilation.  This fails
  280.           to work on some systems where the assembler cannot read
  281.           from a pipe; but the GNU assembler has no trouble.
  282.  
  283. LANGUAGE OPTIONS
  284.      The following options control the dialect of C that the com-
  285.      piler accepts:
  286.  
  287.      -ansi
  288.           Support all ANSI standard C programs.
  289.  
  290.           This turns off certain features of GNU C that  are  in-
  291.           compatible  with  ANSI  C,  such as the asm, inline and
  292.           typeof keywords, and predefined macros such as unix and
  293.           vax that identify the type of system you are using.  It
  294.           also enables the undesirable and rarely used ANSI  tri-
  295.           graph feature, and makes the preprocessor accept `$' as
  296.           part of identifiers.
  297.  
  298.           The alternate keywords  __asm__,  __extension__,  __in-
  299.           line__ and __typeof__ continue to work despite `-ansi'.
  300.           You would not want to use them in an ANSI C program, of
  301.           course,  but  it  is useful to put them in header files
  302.           that  might  be  included  in  compilations  done  with
  303.           `-ansi'.   Alternate predefined macros such as __unix__
  304.           and  __vax__  are  also  available,  with  or   without
  305.           `-ansi'.
  306.  
  307.           The `-ansi' option does not cause non-ANSI programs  to
  308.           be rejected gratuitously.  For that, `-pedantic' is re-
  309.           quired in addition to `-ansi'.
  310.  
  311.           The preprocessor  predefines  a  macro  __STRICT_ANSI__
  312.           when you use the `-ansi' option.  Some header files may
  313.           notice this macro and refrain  from  declaring  certain
  314.           functions  or  defining  certain  macros  that the ANSI
  315.           standard doesn't call for; this is to avoid interfering
  316.           with  any programs that might use these names for other
  317.           things.
  318.  
  319.      -fno-asm
  320.           Do not recognize asm, inline or typeof  as  a  keyword.
  321.           These  words  may then be used as identifiers.  You can
  322.           use  __asm__,  __inline__   and   __typeof__   instead.
  323.  
  324. GNU Tools            Last change: 27dec1991                     6
  325.  
  326. GCC(1)                      GNU Tools                      GCC(1)
  327.  
  328.           `-ansi' implies `-fno-asm'.
  329.  
  330.      -fno-builtin
  331.           (Ignored for C++.) Don't  recognize  non-ANSI  built-in
  332.           functions.   `-ansi'  also  has this effect. Currently,
  333.           the only function affected is alloca.
  334.  
  335.      -fno-strict-prototype
  336.           (C++ only.) Consider the declaration int foo  ();.   In
  337.           C++,  this  means  that the function foo takes no argu-
  338.           ments.  In ANSI C, this  is  declared  int  foo(void);.
  339.           With  the flag `-fno-strict-prototype', declaring func-
  340.           tions with no arguments is equivalent to declaring  its
  341.           argument  list  to  be  untyped,  i.e.,  int foo (); is
  342.           equivalent to saying int foo (...);.
  343.  
  344.      -trigraphs
  345.           Support ANSI C trigraphs.  The `-ansi'  option  implies
  346.           `-trigraphs'.
  347.  
  348.      -traditional
  349.           Attempt to support some aspects of traditional  C  com-
  350.           pilers.
  351.  
  352.           Specifically, for both C and C++ programs:
  353.  
  354.          In the preprocessor, comments  convert  to  nothing  at
  355.           all,  rather  than to a space.  This allows traditional
  356.           token concatenation.
  357.  
  358.          In the preprocessor,  macro  arguments  are  recognized
  359.           within  string  constants  in  a  macro definition (and
  360.           their values are stringified, though without additional
  361.           quote  marks, when they appear in such a context).  The
  362.           preprocessor always considers a string constant to  end
  363.           at a newline.
  364.  
  365.          The preprocessor does not predefine the macro  __STDC__
  366.           when     you     use    `-traditional',    but    still
  367.           predefines__GNUC__ (since the GNU extensions  indicated
  368.           by  __GNUC__  are  not affected by `-traditional').  If
  369.           you need to write header files  that  work  differently
  370.           depending on whether `-traditional' is in use, by test-
  371.           ing both of these predefined macros you can distinguish
  372.           four situations: GNU C, traditional GNU C, other ANSI C
  373.           compilers, and other old C compilers.
  374.  
  375.          In the preprocessor, comments  convert  to  nothing  at
  376.           all,  rather  than to a space.  This allows traditional
  377.           token concatenation.
  378.  
  379.          In the preprocessor,  macro  arguments  are  recognized
  380.  
  381. GNU Tools            Last change: 27dec1991                     7
  382.  
  383. GCC(1)                      GNU Tools                      GCC(1)
  384.  
  385.           within  string  constants  in  a  macro definition (and
  386.           their values are stringified, though without additional
  387.           quote  marks, when they appear in such a context).  The
  388.           preprocessor always considers a string constant to  end
  389.           at a newline.
  390.  
  391.          The preprocessor does not predefine the macro  __STDC__
  392.           when     you     use    `-traditional',    but    still
  393.           predefines__GNUC__ (since the GNU extensions  indicated
  394.           by  __GNUC__  are  not affected by `-traditional').  If
  395.           you need to write header files  that  work  differently
  396.           depending on whether `-traditional' is in use, by test-
  397.           ing both of these predefined macros you can distinguish
  398.           four situations: GNU C, traditional GNU C, other ANSI C
  399.           compilers, and other old C compilers.
  400.  
  401.          String ``constants'' are not necessarily constant; they
  402.           are  stored  in  writable  space, and identical looking
  403.           constants are allocated separately.  (This is the  same
  404.           as the effect of `-fwritable-strings'.)
  405.  
  406.           In addition, `-traditional' has  these  effects  for  C
  407.           programs (not C++):
  408.  
  409.          All extern declarations take effect  globally  even  if
  410.           they are written inside of a function definition.  This
  411.           includes implicit declarations of functions.
  412.  
  413.          The keywords typeof, inline, signed, const and volatile
  414.           are not recognized.  (You can still use the alternative
  415.           keywords such as __typeof__, __inline__, and so on.)
  416.  
  417.          Comparisons between pointers and  integers  are  always
  418.           allowed.
  419.  
  420.          Integer types unsigned short and unsigned char  promote
  421.           to unsigned int.
  422.  
  423.          Out-of-range floating point literals are not an error.
  424.  
  425.          All  automatic  variables  not  declared  register  are
  426.           preserved  by  longjmp.  Ordinarily, GNU C follows ANSI
  427.           C: automatic variables not  declared  volatile  may  be
  428.           clobbered.
  429.  
  430.           Finally, for C++ programs only (not C),  `-traditional'
  431.           has  one  additional effect: assignment to this is per-
  432.           mitted.   This  is  the   same   as   the   effect   of
  433.           `-fthis-is-variable'.
  434.  
  435.      -traditional-cpp
  436.           Attempt  to  support  some  aspects  of  traditional  C
  437.  
  438. GNU Tools            Last change: 27dec1991                     8
  439.  
  440. GCC(1)                      GNU Tools                      GCC(1)
  441.  
  442.           preprocessors.   This  includes the items that specifi-
  443.           cally mention the preprocessor above, but none  of  the
  444.           other effects of `-traditional'.
  445.  
  446.      -fdollars-in-identifiers
  447.           (C++ only.) Permit  the  use  of  `$'  in  identifiers.
  448.           (For  GNU C, this is the default, and you can forbid it
  449.           with `-ansi'.) Traditional C allowed the character  `$'
  450.           to form part of identifiers; by default, GNU C also al-
  451.           lows this.  However, ANSI C forbids `$' in identifiers,
  452.           and  GNU  C++  also forbids it by default on most plat-
  453.           forms (though on some platforms it's enabled by default
  454.           for GNU C++ as well).
  455.  
  456.      -fenum-int-equiv
  457.           (C++ only.) Normally GNU C++ allows conversion of  enum
  458.           to  int, but not the other way around.  Use this option
  459.           if you want GNU C++ to allow conversion of int to  enum
  460.           as well.
  461.  
  462.      -fall-virtual
  463.           (C++ only.)  When  you  use  the  `-fall-virtual',  all
  464.           member  functions (except for constructor functions and
  465.           new/delete member operators) declared in the same class
  466.           with  a  ``method-call'' operator method are treated as
  467.           virtual functions of the given class.  In  effect,  all
  468.           of these methods become ``implicitly virtual.''
  469.  
  470.           This does not mean that all calls to these methods will
  471.           be  made  through  the  internal table of virtual func-
  472.           tions.  There are some circumstances under which it  is
  473.           obvious  that a call to a given virtual function can be
  474.           made directly, and in these cases the  calls  still  go
  475.           direct.
  476.  
  477.           The effect of making all methods of a class with a  de-
  478.           clared   `operator->()()'   implicitly   virtual  using
  479.           `-fall-virtual' extends  also  to  all  non-constructor
  480.           methods of any class derived from such a class.
  481.  
  482.      -fcond-mismatch
  483.           Allow conditional expressions with mismatched types  in
  484.           the  second  and third arguments.  The value of such an
  485.           expression is void.
  486.  
  487.      -fthis-is-variable
  488.           (C++ only.)  The  incorporation  of  user-defined  free
  489.           store  management  into C++ has made assignment to this
  490.           an anachronism.  Therefore, by default GNU  C++  treats
  491.           the  type of this in a member function of class X to be
  492.           X *const.  In other words, it is illegal to  assign  to
  493.           this  within  a  class  member  function.  However, for
  494.  
  495. GNU Tools            Last change: 27dec1991                     9
  496.  
  497. GCC(1)                      GNU Tools                      GCC(1)
  498.  
  499.           backwards  compatibility,  you  can  invoke   the   old
  500.           behavior by using `-fthis-is-variable'.
  501.  
  502.      -funsigned-char
  503.           Let the type char be unsigned, like unsigned char.
  504.  
  505.           Each kind of machine has a default for what char should
  506.           be.  It is either like unsigned char by default or like
  507.           signed char by default.
  508.  
  509.           Ideally, a portable program should  always  use  signed
  510.           char or unsigned char when it depends on the signedness
  511.           of an object.  But many programs have been  written  to
  512.           use plain char and expect it to be signed, or expect it
  513.           to be unsigned, depending on  the  machines  they  were
  514.           written  for.   This  option,  and its inverse, let you
  515.           make such a program work with the opposite default.
  516.  
  517.           The type char is always a distinct type  from  each  of
  518.           signed char and unsigned char, even though its behavior
  519.           is always just like one of those two.
  520.  
  521.      -fsigned-char
  522.           Let the type char be signed, like signed char.
  523.  
  524.           Note that this is equivalent  to  `-fno-unsigned-char',
  525.           which is the negative form of `-funsigned-char'.  Like-
  526.           wise,    `-fno-signed-char'    is     equivalent     to
  527.           `-funsigned-char'.
  528.  
  529.      -fsigned-bitfields
  530.  
  531.      -funsigned-bitfields
  532.  
  533.      -fno-signed-bitfields
  534.  
  535.      -fno-unsigned-bitfields
  536.           These options control whether a bitfield is  signed  or
  537.           unsigned,  when  declared  with no explicit `signed' or
  538.           `unsigned' qualifier.  By default, such a  bitfield  is
  539.           signed,  because  this is consistent: the basic integer
  540.           types such as int are signed types.
  541.  
  542.           However, when you specify `-traditional', bitfields are
  543.           all unsigned no matter what.
  544.  
  545.      -fwritable-strings
  546.           Store string constants in the writable data segment and
  547.           don't  uniquize  them.   This is for compatibility with
  548.           old programs which assume they can  write  into  string
  549.           constants.  `-traditional' also has this effect.
  550.  
  551. GNU Tools            Last change: 27dec1991                    10
  552.  
  553. GCC(1)                      GNU Tools                      GCC(1)
  554.  
  555.           Writing into string  constants  is  a  very  bad  idea;
  556.           ``constants'' should be constant.
  557.  
  558. PREPROCESSOR OPTIONS
  559.      These options control the C preprocessor, which  is  run  on
  560.      each C source file before actual compilation.
  561.  
  562.      If you use the `-E' option, GCC does nothing except  prepro-
  563.      cessing.   Some  of  these  options make sense only together
  564.      with `-E' because they cause the preprocessor output  to  be
  565.      unsuitable for actual compilation.
  566.  
  567.      -i file
  568.            Process file as input, discarding the  resulting  out-
  569.           put, before processing the regular input file.  Because
  570.           the output generated from file is discarded,  the  only
  571.           effect  of  `-i  file' is to make the macros defined in
  572.           file available for use in the main input.  The  prepro-
  573.           cessor  evaluates any `-D' and `-U' options on the com-
  574.           mand line before processing `-i' file.
  575.  
  576.      -nostdinc
  577.           Do not  search  the  standard  system  directories  for
  578.           header  files.  Only the directories you have specified
  579.           with `-I' options (and the current  directory,  if  ap-
  580.           propriate) are searched.
  581.  
  582.           By using both `-nostdinc' and `-I-', you can limit  the
  583.           include-file  search file to only those directories you
  584.           specify explicitly.
  585.  
  586.      -undef
  587.           Do not predefine any  nonstandard  macros.   (Including
  588.           architecture flags).
  589.  
  590.      -E   Run only the C  preprocessor.   Preprocess  all  the  C
  591.           source  files specified and output the results to stan-
  592.           dard output or to the specified output file.
  593.  
  594.      -C   Tell the preprocessor not to  discard  comments.   Used
  595.           with the `-E' option.
  596.  
  597.      -P   Tell the preprocessor not to generate `#line' commands.
  598.           Used with the `-E' option.
  599.  
  600.      -M   Tell the preprocessor to output  a  rule  suitable  for
  601.           make  describing  the dependencies of each object file.
  602.           For each source  file,  the  preprocessor  outputs  one
  603.           make-rule whose target is the object file name for that
  604.           source file and whose dependencies are  all  the  files
  605.           `#include'd  in  it.  This rule may be a single line or
  606.           may be continued with `\'-newline if it is  long.   The
  607.  
  608. GNU Tools            Last change: 27dec1991                    11
  609.  
  610. GCC(1)                      GNU Tools                      GCC(1)
  611.  
  612.           list  of rules is printed on standard output instead of
  613.           the preprocessed C program.
  614.  
  615.           `-M' implies `-E'.
  616.  
  617.      -MM  Like `-M' but the output mentions only the user  header
  618.           files  included  with  `#include file"'.  System header
  619.           files included with `#include <file>' are omitted.
  620.  
  621.      -MD  Like `-M' but the dependency information is written  to
  622.           files  with  names  made by replacing `.c' with `.d' at
  623.           the end of the input file names.  This is  in  addition
  624.           to compiling the file as specified-`-MD' does not inhi-
  625.           bit ordinary compilation the way `-M' does.
  626.  
  627.           The Mach utility `md' can be used  to  merge  the  `.d'
  628.           files  into a single dependency file suitable for using
  629.           with the `make' command.
  630.  
  631.      -MMD Like `-MD' except mention only user header  files,  not
  632.           system header files.
  633.  
  634.      -H   Print the name of each header file used, in addition to
  635.           other normal activities.
  636.  
  637.      -Dmacro
  638.           Define macro macro with the string `1' as  its  defini-
  639.           tion.
  640.  
  641.      -Dmacro=defn
  642.           Define macro macro as defn.    All instances of `-D' on
  643.           the  command line are processed before any `-U' or `-i'
  644.           options.
  645.  
  646.      -Umacro
  647.           Undefine macro macro.  `-U' options are evaluated after
  648.           all `-D' options, but before any `-i' options.
  649.  
  650.      -dM  Tell the preprocessor to output only a list of the mac-
  651.           ro definitions that are in effect at the end of prepro-
  652.           cessing.  Used with the `-E' option.
  653.  
  654.      -dD  Tell the preprocessing to pass  all  macro  definitions
  655.           into  the  output, in their proper sequence in the rest
  656.           of the output.
  657.  
  658.      -dN  Like `-dD' except that the macro arguments and contents
  659.           are  omitted.   Only  `#define name' is included in the
  660.           output.
  661.  
  662. LINKER OPTIONS
  663.      These options come into play when the compiler links  object
  664.  
  665. GNU Tools            Last change: 27dec1991                    12
  666.  
  667. GCC(1)                      GNU Tools                      GCC(1)
  668.  
  669.      files  into an executable output file.  They are meaningless
  670.      if the compiler is not doing a link step.
  671.  
  672.      object-file-name
  673.           A file name that does not end in a  special  recognized
  674.           suffix is considered to name an object file or library.
  675.           (Object files are distinguished from libraries  by  the
  676.           linker  according to the file contents.)  If GCC does a
  677.           link step, these object files are used as input to  the
  678.           linker.
  679.  
  680.      -dynamic
  681.           On systems that support dynamic linking,  you  can  use
  682.           this option to request it explicitly.
  683.  
  684.      -llibrary
  685.            Use the library named library when linking.
  686.  
  687.           The linker searches a standard list of directories  for
  688.           the   library,   which   is   actually   a  file  named
  689.           `liblibrary.a'.  The linker then uses this file  as  if
  690.           it had been specified precisely by name.
  691.  
  692.           The directories searched include several standard  sys-
  693.           tem directories plus any that you specify with `-L'.
  694.  
  695.           Normally the files found this way  are  library  files-
  696.           archive  files  whose  members  are  object files.  The
  697.           linker handles an archive file by scanning  through  it
  698.           for  members which define symbols that have so far been
  699.           referenced but not defined.   However,  if  the  linker
  700.           finds  an  ordinary  object file rather than a library,
  701.           the object file is linked in the  usual  fashion.   The
  702.           only difference between using an `-l' option and speci-
  703.           fying a file name is that `-l' surrounds  library  with
  704.           `lib' and `.a' and searches several directories.
  705.  
  706.      -nostdlib
  707.           Don't use the standard  system  libraries  and  startup
  708.           files when linking.  Only the files you specify will be
  709.           passed to the linker.
  710.  
  711.      -static
  712.           On systems that support dynamic linking, this  prevents
  713.           linking with the shared libraries.  (`-g' also has this
  714.           effect.)  On other systems, this option has no effect.
  715.  
  716. DIRECTORY OPTIONS
  717.      These options  specify  directories  to  search  for  header
  718.      files, for libraries and for parts of the compiler:
  719.  
  720.      -Idir
  721.  
  722. GNU Tools            Last change: 27dec1991                    13
  723.  
  724. GCC(1)                      GNU Tools                      GCC(1)
  725.  
  726.            Append  directory  dir  to  the  list  of  directories
  727.           searched for include files.
  728.  
  729.      -I-  Any directories you specify with  `-I'  options  before
  730.           the  `-I-'  option  are  searched  only for the case of
  731.           `#include "file"'; they are not searched for  `#include
  732.           <file>'.
  733.  
  734.           If additional directories are specified with  `-I'  op-
  735.           tions  after  the `-I-', these directories are searched
  736.           for all `#include' directives.   (Ordinarily  all  `-I'
  737.           directories are used this way.)
  738.  
  739.           In addition, the `-I-' option inhibits the use  of  the
  740.           current  directory  (where  the current input file came
  741.           from) as  the  first  search  directory  for  `#include
  742.           "file"'.   There  is  no way to override this effect of
  743.           `-I-'.  With `-I.' you can specify searching the direc-
  744.           tory  which  was current when the compiler was invoked.
  745.           That is not exactly the same as what  the  preprocessor
  746.           does by default, but it is often satisfactory.
  747.  
  748.           `-I-' does not inhibit the use of the  standard  system
  749.           directories  for header files.  Thus, `-I-' and `-nost-
  750.           dinc' are independent.
  751.  
  752.      -Ldir
  753.            Add directory dir to the list  of  directories  to  be
  754.           searched for `-l'.
  755.  
  756.      -Bprefix
  757.            This option specifies where to find  the  executables,
  758.           libraries and data files of the compiler itself.
  759.  
  760.           The compiler driver program runs one  or  more  of  the
  761.           subprograms `cpp', `cc1' (or, for C++, `cc1plus'), `as'
  762.           and `ld'.  It tries prefix as a prefix for each program
  763.           it    tries    to    run,   both   with   and   without
  764.           `machine/version/'.
  765.  
  766.           For each subprogram to  be  run,  the  compiler  driver
  767.           first  tries  the `-B' prefix, if any.  If that name is
  768.           not found, or if `-B' was  not  specified,  the  driver
  769.           tries  two standard prefixes, which are `/usr/lib/gcc/'
  770.           and `/usr/local/lib/gcc/'.  If neither of those results
  771.           in  a  file  name  that  is  found, the compiler driver
  772.           searches for the unmodified  program  name,  using  the
  773.           directories  specified in your `PATH' environment vari-
  774.           able.
  775.  
  776.           The run-time support file `libgcc.a' is  also  searched
  777.           for  using  the  `-B'  prefix, if needed.  If it is not
  778.  
  779. GNU Tools            Last change: 27dec1991                    14
  780.  
  781. GCC(1)                      GNU Tools                      GCC(1)
  782.  
  783.           found there, the two standard prefixes above are tried,
  784.           and  that  is all.  The file is left out of the link if
  785.           it is not found by those means.  Most of the  time,  on
  786.           most machines, `libgcc.a' is not actually necessary.
  787.  
  788.           You can get a similar result from the environment vari-
  789.           able  GCC_EXEC_PREFIX;  if  it is defined, its value is
  790.           used as a prefix in the same way.  If both the `-B' op-
  791.           tion  and the GCC_EXEC_PREFIX variable are present, the
  792.           `-B' option is used first and the environment  variable
  793.           value second.
  794.  
  795. WARNING OPTIONS
  796.      Warnings are diagnostic messages that  report  constructions
  797.      which  are  not  inherently erroneous but which are risky or
  798.      suggest there may have been an error.
  799.  
  800.      These options control the amount and kinds of warnings  pro-
  801.      duced by GNU CC:
  802.  
  803.      -fsyntax-only
  804.           Check the code for syntax errors, but  don't  emit  any
  805.           output.
  806.  
  807.      -w   Inhibit all warning messages.
  808.  
  809.      -pedantic
  810.           Issue all the warnings demanded by strict ANSI standard
  811.           C; reject all programs that use forbidden extensions.
  812.  
  813.           Valid ANSI standard C programs should compile  properly
  814.           with or without this option (though a rare few will re-
  815.           quire `-ansi').  However, without this option,  certain
  816.           GNU extensions and traditional C features are supported
  817.           as well.  With this option, they are  rejected.   There
  818.           is  no  reason  to  use  this option; it exists only to
  819.           satisfy pedants.
  820.  
  821.           `-pedantic' does not cause warning messages for use  of
  822.           the  alternate  keywords whose names begin and end with
  823.           `__'.  Pedantic warnings are also disabled in  the  ex-
  824.           pression  that  follows  __extension__.   However, only
  825.           system header files should use these escape routes; ap-
  826.           plication programs should avoid them.
  827.  
  828.      -pedantic-errors
  829.           Like `-pedantic', except that errors are produced rath-
  830.           er than warnings.
  831.  
  832.      -Werror
  833.           Treat warnings as errors; abort compilation  after  any
  834.           warning.
  835.  
  836. GNU Tools            Last change: 27dec1991                    15
  837.  
  838. GCC(1)                      GNU Tools                      GCC(1)
  839.  
  840.      -W   Print extra warning messages for these events:
  841.  
  842.          A nonvolatile automatic variable might be changed by  a
  843.           call  to  longjmp.  These warnings are possible only in
  844.           optimizing compilation.
  845.  
  846.           The compiler sees only the calls to setjmp.  It  cannot
  847.           know  where  longjmp  will be called; in fact, a signal
  848.           handler could call it at any point in the code.   As  a
  849.           result,  you  may  get  a warning even when there is in
  850.           fact no problem  because  longjmp  cannot  in  fact  be
  851.           called at the place which would cause a problem.
  852.  
  853.          A function can return either with or without  a  value.
  854.           (Falling off the end of the function body is considered
  855.           returning without a value.)  For example, this function
  856.           would evoke such a warning:
  857.  
  858.           foo (a)
  859.           {
  860.             if (a > 0)
  861.               return a;
  862.           }
  863.  
  864.           Spurious warnings can occur because  GNU  CC  does  not
  865.           realize  that  certain  functions  (including abort and
  866.           longjmp) will never return.
  867.  
  868.          An expression-statement contains no side effects.
  869.  
  870.          An unsigned value is compared against zero with `>'  or
  871.           `<='.
  872.  
  873.      -Wimplicit
  874.           Warn whenever a function or parameter is implicitly de-
  875.           clared.
  876.  
  877.      -Wreturn-type
  878.           Warn whenever a function is defined with a  return-type
  879.           that  defaults  to  int.   Also  warn  about any return
  880.           statement with no  return-value  in  a  function  whose
  881.           return-type is not void.
  882.  
  883.      -Wunused
  884.           Warn whenever a local variable is unused aside from its
  885.           declaration, whenever a function is declared static but
  886.           never defined, and  whenever  a  statement  computes  a
  887.           result that is explicitly not used.
  888.  
  889.      -Wswitch
  890.           Warn whenever  a  switch  statement  has  an  index  of
  891.  
  892. GNU Tools            Last change: 27dec1991                    16
  893.  
  894. GCC(1)                      GNU Tools                      GCC(1)
  895.  
  896.           enumeral  type  and lacks a case for one or more of the
  897.           named codes of that enumeration.  (The  presence  of  a
  898.           default label prevents this warning.)  case labels out-
  899.           side the enumeration range also provoke  warnings  when
  900.           this option is used.
  901.  
  902.      -Wcomment
  903.           Warn whenever a comment-start sequence `/*' appears  in
  904.           a comment.
  905.  
  906.      -Wtrigraphs
  907.           Warn if any trigraphs are  encountered  (assuming  they
  908.           are enabled).
  909.  
  910.      -Waggregate-return
  911.           Warn if any functions that return structures or  unions
  912.           are defined or called.  (In languages where you can re-
  913.           turn an array, this also elicits a warning.)
  914.  
  915.      -Wformat
  916.           Check calls to printf and scanf,  etc.,  to  make  sure
  917.           that  the  arguments supplied have types appropriate to
  918.           the format string specified.
  919.  
  920.      -Wuninitialized
  921.           An automatic variable is used without first being  ini-
  922.           tialized.
  923.  
  924.           These warnings are possible only in optimizing compila-
  925.           tion,  because  they require data flow information that
  926.           is computed only when optimizing.  If you don't specify
  927.           `-O', you simply won't get these warnings.
  928.  
  929.           These warnings occur only for variables that are candi-
  930.           dates  for register allocation.  Therefore, they do not
  931.           occur for a variable  that  is  declared  volatile,  or
  932.           whose  address is taken, or whose size is other than 1,
  933.           2, 4 or 8 bytes.  Also, they do not  occur  for  struc-
  934.           tures,  unions  or arrays, even when they are in regis-
  935.           ters.
  936.  
  937.           Note that there may be no warning about a variable that
  938.           is  used  only  to compute a value that itself is never
  939.           used, because such computations may be deleted by  data
  940.           flow analysis before the warnings are printed.
  941.  
  942.           These warnings are made optional because GNU CC is  not
  943.           smart  enough to see all the reasons why the code might
  944.           be correct despite appearing to have an error.  Here is
  945.           one example of how this can happen:
  946.  
  947. GNU Tools            Last change: 27dec1991                    17
  948.  
  949. GCC(1)                      GNU Tools                      GCC(1)
  950.  
  951.           {
  952.             int x;
  953.             switch (y)
  954.               {
  955.               case 1: x = 1;
  956.                 break;
  957.               case 2: x = 4;
  958.                 break;
  959.               case 3: x = 5;
  960.               }
  961.             foo (x);
  962.           }
  963.  
  964.           If the value of y is always 1, 2 or 3, then x is always
  965.           initialized,  but  GNU  CC  doesn't know this.  Here is
  966.           another common case:
  967.  
  968.           {
  969.             int save_y;
  970.             if (change_y) save_y = y, y = new_y;
  971.             ...
  972.             if (change_y) y = save_y;
  973.           }
  974.  
  975.           This has no bug because save_y is used only  if  it  is
  976.           set.
  977.  
  978.           Some spurious warnings can be avoided if you declare as
  979.           volatile all the functions you use that never return.
  980.  
  981.      -Wstrict-prototypes
  982.           Warn if a  function  is  declared  or  defined  without
  983.           specifying  the argument types.  (An old-style function
  984.           definition is permitted without a warning  if  preceded
  985.           by a declaration which specifies the argument types.)
  986.  
  987.      -Wmissing-prototypes
  988.           Warn if a global function is defined without a previous
  989.           prototype  declaration.  This warning is issued even if
  990.           the definition itself provides a prototype.  The aim is
  991.           to  detect global functions that fail to be declared in
  992.           header files.
  993.  
  994.      -Wall
  995.           All of the above `-W' options combined.  These are  all
  996.           the  options  which  pertain to usage that we recommend
  997.           avoiding and that we believe is easy to avoid, even  in
  998.  
  999. GNU Tools            Last change: 27dec1991                    18
  1000.  
  1001. GCC(1)                      GNU Tools                      GCC(1)
  1002.  
  1003.           conjunction with macros.
  1004.  
  1005.      The remaining `-W...' options are not implied by `-Wall' be-
  1006.      cause they warn about constructions that we consider reason-
  1007.      able to use, on occasion, in clean programs.
  1008.  
  1009.      -Wtraditional
  1010.           Warn about certain constructs that  behave  differently
  1011.           in traditional and ANSI C.
  1012.  
  1013.          Macro arguments occurring within  string  constants  in
  1014.           the macro body.  These would substitute the argument in
  1015.           traditional C, but are part of the constant in ANSI C.
  1016.  
  1017.          A function declared external in one block and then used
  1018.           after the end of the block.
  1019.  
  1020.          A switch statement has an operand of type long.
  1021.  
  1022.      -Wshadow
  1023.           Warn whenever a local variable  shadows  another  local
  1024.           variable.
  1025.  
  1026.      -Wid-clash-len
  1027.            Warn whenever two distinct identifiers  match  in  the
  1028.           first len characters.  This may help you prepare a pro-
  1029.           gram that will compile with  certain  obsolete,  brain-
  1030.           damaged compilers.
  1031.  
  1032.      -Wpointer-arith
  1033.           Warn about anything that depends on the ``size  of''  a
  1034.           function  type or of void.  GNU C assigns these types a
  1035.           size of 1, for convenience in calculations with void  *
  1036.           pointers and pointers to functions.
  1037.  
  1038.      -Wcast-qual
  1039.           Warn whenever a pointer is cast so as to remove a  type
  1040.           qualifier from the target type.  For example, warn if a
  1041.           const char * is cast to an ordinary char *.
  1042.  
  1043.      -Wcast-align
  1044.           Warn whenever a pointer is cast such that the  required
  1045.           alignment  of  the  target  is increased.  For example,
  1046.           warn if a char * is cast to an int * on machines  where
  1047.           integers  can  only  be  accessed  at two- or four-byte
  1048.           boundaries.
  1049.  
  1050.      -Wwrite-strings
  1051.           Give string constants the type  const  char[length]  so
  1052.           that copying the address of one into a non-const char *
  1053.           pointer will get a warning.  These warnings  will  help
  1054.           you  find  at  compile  time code that can try to write
  1055.  
  1056. GNU Tools            Last change: 27dec1991                    19
  1057.  
  1058. GCC(1)                      GNU Tools                      GCC(1)
  1059.  
  1060.           into a string constant, but only if you have been  very
  1061.           careful  about  using  const in declarations and proto-
  1062.           types.  Otherwise, it will just be a nuisance; this  is
  1063.           why we did not make `-Wall' request these warnings.
  1064.  
  1065.      -Wconversion
  1066.           Warn if a prototype causes a type  conversion  that  is
  1067.           different  from  what would happen to the same argument
  1068.           in the absence of a prototype.  This  includes  conver-
  1069.           sions  of  fixed  point to floating and vice versa, and
  1070.           conversions changing the width or signedness of a fixed
  1071.           point argument except when the same as the default pro-
  1072.           motion.
  1073.  
  1074.      -Wenum-clash
  1075.           (C++ only.)  Warn  when  converting  between  different
  1076.           enumeration types.
  1077.  
  1078.      -Wno-parentheses
  1079.           Disable warnings that parentheses are suggested  around
  1080.           an expression.
  1081.  
  1082.      -Woverloaded-virtual
  1083.           (C++ only.) In a derived class, the definitions of vir-
  1084.           tual  functions must match the type signature of a vir-
  1085.           tual function declared in the base class.  Use this op-
  1086.           tion  to request warnings when a derived class declares
  1087.           a function that may be an erroneous attempt to define a
  1088.           virtual  function:  that  is, warn when a function with
  1089.           the same name as a virtual function in the base  class,
  1090.           but with a type signature that doesn't match any virtu-
  1091.           al functions from the base class.
  1092.  
  1093. DEBUGGING OPTIONS
  1094.      GNU CC has various special options that are used for  debug-
  1095.      ging either your program or GCC:
  1096.  
  1097.      -g   Produce debugging information in the operating system's
  1098.           native  format (for DBX or SDB or DWARF).  GDB also can
  1099.           work with this debugging information.  On most  systems
  1100.           that  use  DBX format, `-g' enables use of extra debug-
  1101.           ging information that only GDB can use; if you want  to
  1102.           control  for  certain whether to generate this informa-
  1103.           tion, use `-ggdb' or `-gdbx'.
  1104.  
  1105.           Unlike most other C compilers, GNU CC allows you to use
  1106.           `-g'  with `-O'.  The shortcuts taken by optimized code
  1107.           may occasionally produce surprising results: some vari-
  1108.           ables  you  declared may not exist at all; flow of con-
  1109.           trol may briefly move where you did not expect it; some
  1110.           statements  may  not  be  executed because they compute
  1111.           constant results or their values were already at  hand;
  1112.  
  1113. GNU Tools            Last change: 27dec1991                    20
  1114.  
  1115. GCC(1)                      GNU Tools                      GCC(1)
  1116.  
  1117.           some statements may execute in different places because
  1118.           they were moved out of loops.
  1119.  
  1120.           Nevertheless it proves possible to debug optimized out-
  1121.           put.  This makes it reasonable to use the optimizer for
  1122.           programs that might have bugs.
  1123.  
  1124.           The following options are useful when GNU CC is config-
  1125.           ured and compiled with the capability for more than one
  1126.           debugging format.
  1127.  
  1128.      -ggdb
  1129.           Produce debugging information in DBX format (if that is
  1130.           supported), including GDB extensions.
  1131.  
  1132.      -gdbx
  1133.           Produce debugging information in DBX format (if that is
  1134.           supported), without GDB extensions.
  1135.  
  1136.      -gsdb
  1137.           Produce debugging information in SDB format (if that is
  1138.           supported).
  1139.  
  1140.      -gdwarf
  1141.           Produce debugging information in DWARF format (if  that
  1142.           is supported).
  1143.  
  1144.      -glevel
  1145.      -ggdblevel
  1146.      -gdbxlevel
  1147.      -gsdblevel
  1148.  
  1149.      -gdwarflevel
  1150.           Request debugging information and  also  use  level  to
  1151.           specify how much information.  The default level is 2.
  1152.  
  1153.           Level 1 produces minimal information, enough for making
  1154.           backtraces  in parts of the program that you don't plan
  1155.           to debug.  This includes descriptions of functions  and
  1156.           external  variables,  but  no  information  about local
  1157.           variables and no line numbers.
  1158.  
  1159.      -p   Generate extra code to write profile information  suit-
  1160.           able for the analysis program prof.
  1161.  
  1162.      -pg  Generate extra code to write profile information  suit-
  1163.           able for the analysis program gprof.
  1164.  
  1165.      -a   Generate extra code to write  profile  information  for
  1166.           basic  blocks,  which  will  record the number of times
  1167.           each basic block  is  executed.   This  data  could  be
  1168.           analyzed  by  a program like tcov.  Note, however, that
  1169.  
  1170. GNU Tools            Last change: 27dec1991                    21
  1171.  
  1172. GCC(1)                      GNU Tools                      GCC(1)
  1173.  
  1174.           the format of the data is not what tcov expects.  Even-
  1175.           tually  GNU  gprof  should  be extended to process this
  1176.           data.
  1177.  
  1178.      -dletters
  1179.            Says to make debugging  dumps  during  compilation  at
  1180.           times specified by letters.  This is used for debugging
  1181.           the compiler.  The file names for most of the dumps are
  1182.           made  by appending a word to the source file name (e.g.
  1183.           `foo.c.rtl' or `foo.c.jump').
  1184.  
  1185.      -dM  Dump all macro definitions, at the end  of  preprocess-
  1186.           ing, and write no output.
  1187.  
  1188.      -dN  Dump all macro names, at the end of preprocessing.
  1189.  
  1190.      -dD  Dump all macro definitions, at the end  of  preprocess-
  1191.           ing, in addition to normal output.
  1192.  
  1193.      -dy  Dump debugging information during parsing, to  standard
  1194.           error.
  1195.  
  1196.      -dr  Dump after RTL generation, to `file.rtl'.
  1197.  
  1198.      -dx  Just generate RTL for a function instead  of  compiling
  1199.           it.  Usually used with `r'.
  1200.  
  1201.      -dj  Dump after first jump optimization, to `file.jump'.
  1202.  
  1203.      -ds  Dump after CSE (including the  jump  optimization  that
  1204.           sometimes follows CSE), to `file.cse'.
  1205.  
  1206.      -dL  Dump after loop optimization, to `file.loop'.
  1207.  
  1208.      -dt  Dump after the second CSE pass (including the jump  op-
  1209.           timization that sometimes follows CSE), to `file.cse2'.
  1210.  
  1211.      -df  Dump after flow analysis, to `file.flow'.
  1212.  
  1213.      -dc  Dump after instruction combination, to `file.combine'.
  1214.  
  1215.      -dS  Dump after the first instruction  scheduling  pass,  to
  1216.           `file.sched'.
  1217.  
  1218.      -dl  Dump after local register allocation, to `file.lreg'.
  1219.  
  1220.      -dg  Dump after global register allocation, to `file.greg'.
  1221.  
  1222.      -dR  Dump after the second instruction scheduling  pass,  to
  1223.           `file.sched2'.
  1224.  
  1225.      -dJ  Dump after last jump optimization, to `file.jump2'.
  1226.  
  1227. GNU Tools            Last change: 27dec1991                    22
  1228.  
  1229. GCC(1)                      GNU Tools                      GCC(1)
  1230.  
  1231.      -dd  Dump after delayed branch scheduling, to `file.dbr'.
  1232.  
  1233.      -dk  Dump after  conversion  from  registers  to  stack,  to
  1234.           `file.stack'.
  1235.  
  1236.      -dm  Print statistics on memory usage, at  the  end  of  the
  1237.           run, to standard error.
  1238.  
  1239.      -dp  Annotate the assembler output with a comment indicating
  1240.           which pattern and alternative was used.
  1241.  
  1242.      -fpretend-float
  1243.           When running a cross-compiler, pretend that the  target
  1244.           machine uses the same floating point format as the host
  1245.           machine.  This causes incorrect output  of  the  actual
  1246.           floating constants, but the actual instruction sequence
  1247.           will probably be the same as GNU  CC  would  make  when
  1248.           running on the target machine.
  1249.  
  1250.      -save-temps
  1251.           Store the usual ``temporary'' intermediate  files  per-
  1252.           manently;  place them in the current directory and name
  1253.           them based on the source file.  Thus, compiling `foo.c'
  1254.           with `-c -save-temps' would produce files `foo.cpp' and
  1255.           `foo.s', as well as `foo.o'.
  1256.  
  1257. OPTIMIZATION OPTIONS
  1258.      These options control various sorts of optimizations:
  1259.  
  1260.      -O   Optimize.  Optimizing compilation takes  somewhat  more
  1261.           time, and a lot more memory for a large function.
  1262.  
  1263.           Without `-O', the compiler's goal is to reduce the cost
  1264.           of  compilation  and  to make debugging produce the ex-
  1265.           pected results.  Statements  are  independent:  if  you
  1266.           stop  the program with a breakpoint between statements,
  1267.           you can then assign a new  value  to  any  variable  or
  1268.           change  the  program  counter to any other statement in
  1269.           the function and get exactly the results you would  ex-
  1270.           pect from the source code.
  1271.  
  1272.           Without `-O', only variables declared register are  al-
  1273.           located in registers.  The resulting compiled code is a
  1274.           little worse than produced by PCC without `-O'.
  1275.  
  1276.           With `-O', the compiler tries to reduce code  size  and
  1277.           execution time.
  1278.  
  1279.           When   you   specify   `-O',    `-fthread-jumps'    and
  1280.           `-fdelayed-branch'  are  turned  on.   On some machines
  1281.           other flags may also be turned on.
  1282.  
  1283. GNU Tools            Last change: 27dec1991                    23
  1284.  
  1285. GCC(1)                      GNU Tools                      GCC(1)
  1286.  
  1287.      -O2  Highly optimize.  As compared to `-O', this option will
  1288.           increase  both  compilation time and the performance of
  1289.           the generated code.
  1290.  
  1291.           All `-fflag'  options  that  control  optimization  are
  1292.           turned    on    when    you   specify   `-O2',   except
  1293.           `-funroll-loops' and `-funroll-all-loops'.
  1294.  
  1295.      Options of the  form  `-fflag'  specify  machine-independent
  1296.      flags.   Most  flags  have both positive and negative forms;
  1297.      the negative form of `-ffoo' would be `-fno-foo'.  The  fol-
  1298.      lowing list shows only one form-the one which is not the de-
  1299.      fault.  You can figure out the other form by either removing
  1300.      `no-' or adding it.
  1301.  
  1302.      -ffloat-store
  1303.           Do not store floating  point  variables  in  registers.
  1304.           This  prevents undesirable excess precision on machines
  1305.           such as the 68000 where the floating registers (of  the
  1306.           68881) keep more precision than a double is supposed to
  1307.           have.
  1308.  
  1309.           For most programs, the excess precision does only good,
  1310.           but  a  few  programs rely on the precise definition of
  1311.           IEEE floating point.  Use `-ffloat-store' for such pro-
  1312.           grams.
  1313.  
  1314.      -fmemoize-lookups
  1315.  
  1316.      -fsave-memoized
  1317.           (C++ only.) These flags are used to get the compiler to
  1318.           compile programs faster using heuristics.  They are not
  1319.           on by default since they are only effective about  half
  1320.           the  time.  The other half of the time programs compile
  1321.           more slowly (and take more memory).
  1322.  
  1323.           The first time the compiler must  build  a  call  to  a
  1324.           member  function  (or  reference  to a data member), it
  1325.           must (1) determine whether the class implements  member
  1326.           functions  of that name; (2) resolve which member func-
  1327.           tion to call (which involves figuring out what sorts of
  1328.           type  conversions  need  to be made); and (3) check the
  1329.           visibility of the member function to the  caller.   All
  1330.           of  this  adds up to slower compilation.  Normally, the
  1331.           second time a call is made to that member function  (or
  1332.           reference  to that data member), it must go through the
  1333.           same lengthy process again.  This means that code  like
  1334.           this
  1335.  
  1336.             cout << "This " << p << " has " << n << " legs.\n";
  1337.  
  1338.           makes six passes through all three steps.  By  using  a
  1339.  
  1340. GNU Tools            Last change: 27dec1991                    24
  1341.  
  1342. GCC(1)                      GNU Tools                      GCC(1)
  1343.  
  1344.           software  cache,  a  ``hit'' significantly reduces this
  1345.           cost.  Unfortunately, using the cache introduces anoth-
  1346.           er  layer  of mechanisms which must be implemented, and
  1347.           so incurs its own  overhead.   `-fmemoize-lookups'  en-
  1348.           ables the software cache.
  1349.  
  1350.           Because access privileges (visibility) to  members  and
  1351.           member  functions  may differ from one function context
  1352.           to the next, g++ may need to flush the cache. With  the
  1353.           `-fmemoize-lookups'  flag,  the  cache is flushed after
  1354.           every function that is compiled.  The `-fsave-memoized'
  1355.           flag enables the same software cache, but when the com-
  1356.           piler determines that the context of the last  function
  1357.           compiled  would yield the same access privileges of the
  1358.           next function to compile, it preserves the cache.  This
  1359.           is most helpful when defining many member functions for
  1360.           the same class: with the exception of member  functions
  1361.           which  are  friends of other classes, each member func-
  1362.           tion has exactly the same access  privileges  as  every
  1363.           other, and the cache need not be flushed.
  1364.  
  1365.      -fno-default-inline
  1366.           (C++  only.)  If  `-fdefault-inline'  is  enabled  then
  1367.           member  functions  defined  inside class scope are com-
  1368.           piled inline by default; i.e., you don't  need  to  add
  1369.           `inline'  in front of the member function name.  By po-
  1370.           pular demand, this option is now the default.  To  keep
  1371.           GNU  C++  from inlining these member functions, specify
  1372.           `-fno-default-inline'.
  1373.  
  1374.      -fno-defer-pop
  1375.           Always pop the arguments to each function call as  soon
  1376.           as  that function returns.  For machines which must pop
  1377.           arguments after a function call, the compiler  normally
  1378.           lets  arguments  accumulate  on  the  stack for several
  1379.           function calls and pops them all at once.
  1380.  
  1381.      -fforce-mem
  1382.           Force memory operands to be copied into  registers  be-
  1383.           fore doing arithmetic on them.  This may produce better
  1384.           code by making all memory references  potential  common
  1385.           subexpressions.   When  they  are not common subexpres-
  1386.           sions, instruction  combination  should  eliminate  the
  1387.           separate  register-load.   I  am  interested in hearing
  1388.           about the difference this makes.
  1389.  
  1390.      -fforce-addr
  1391.           Force memory address constants to be copied into regis-
  1392.           ters before doing arithmetic on them.  This may produce
  1393.           better code just as `-fforce-mem' may.  I am interested
  1394.           in hearing about the difference this makes.
  1395.  
  1396. GNU Tools            Last change: 27dec1991                    25
  1397.  
  1398. GCC(1)                      GNU Tools                      GCC(1)
  1399.  
  1400.      -fomit-frame-pointer
  1401.           Don't keep the frame pointer in a  register  for  func-
  1402.           tions  that  don't  need one.  This avoids the instruc-
  1403.           tions to save, set up and restore  frame  pointers;  it
  1404.           also  makes  an  extra register available in many func-
  1405.           tions.  It also  makes  debugging  impossible  on  most
  1406.           machines.
  1407.  
  1408.           On some machines, such as the Vax, this flag has no ef-
  1409.           fect,  because  the standard calling sequence automati-
  1410.           cally handles the frame pointer and nothing is saved by
  1411.           pretending  it  doesn't exist.  The machine-description
  1412.           macro FRAME_POINTER_REQUIRED controls whether a  target
  1413.           machine supports this flag.
  1414.  
  1415.      -finline
  1416.           Pay attention the inline keyword.  Normally  the  nega-
  1417.           tion  of  this option `-fno-inline' is used to keep the
  1418.           compiler from expanding any functions inline.  However,
  1419.           the  opposite  effect  may  be desirable when compiling
  1420.           with `-g', since `-g' normally  turns  off  all  inline
  1421.           function expansion.
  1422.  
  1423.      -finline-functions
  1424.           Integrate all simple functions into their callers.  The
  1425.           compiler heuristically decides which functions are sim-
  1426.           ple enough to be worth integrating in this way.
  1427.  
  1428.           If all calls to a given function  are  integrated,  and
  1429.           the function is declared static, then GCC normally does
  1430.           not output the function as assembler code  in  its  own
  1431.           right.
  1432.  
  1433.      -fcaller-saves
  1434.           Enable values to be allocated in registers that will be
  1435.           clobbered by function calls, by emitting extra instruc-
  1436.           tions to save and restore  the  registers  around  such
  1437.           calls.   Such  allocation is done only when it seems to
  1438.           result in better code than would otherwise be produced.
  1439.  
  1440.           This option is enabled by default on certain  machines,
  1441.           usually those which have no call-preserved registers to
  1442.           use instead.
  1443.  
  1444.      -fkeep-inline-functions
  1445.           Even if all calls to a given function  are  integrated,
  1446.           and  the function is declared static, nevertheless out-
  1447.           put a separate run-time callable version of  the  func-
  1448.           tion.
  1449.  
  1450.      -fno-function-cse
  1451.           Do not put function addresses in registers;  make  each
  1452.  
  1453. GNU Tools            Last change: 27dec1991                    26
  1454.  
  1455. GCC(1)                      GNU Tools                      GCC(1)
  1456.  
  1457.           instruction  that calls a constant function contain the
  1458.           function's address explicitly.
  1459.  
  1460.           This option results in less efficient  code,  but  some
  1461.           strange  hacks  that  alter the assembler output may be
  1462.           confused by the optimizations performed when  this  op-
  1463.           tion is not used.
  1464.  
  1465.      The following options control specific  optimizations.   The
  1466.      `-O2'  option  turns  on  all  of these optimizations except
  1467.      `-funroll-loops' and `-funroll-all-loops'.
  1468.  
  1469.      The `-O' option usually turns on  the  `-fthread-jumps'  and
  1470.      `-fdelayed-branch' options, but specific machines may change
  1471.      the default optimizations.
  1472.  
  1473.      You can use the following  flags  in  the  rare  cases  when
  1474.      ``fine-tuning'' of optimizations to be performed is desired.
  1475.  
  1476.      -fstrength-reduce
  1477.           Perform the optimizations of  loop  strength  reduction
  1478.           and elimination of iteration variables.
  1479.  
  1480.      -fthread-jumps
  1481.           Perform optimizations where we check to see if  a  jump
  1482.           branches  to  a  location where another comparison sub-
  1483.           sumed by the first is found.  If so, the  first  branch
  1484.           is  redirected  to either the destination of the second
  1485.           branch or a point immediately following  it,  depending
  1486.           on whether the condition is known to be true or false.
  1487.  
  1488.      -funroll-loops
  1489.           Perform the optimization of loop  unrolling.   This  is
  1490.           only  done  for loops whose number of iterations can be
  1491.           determined at compile time or run time.
  1492.  
  1493.      -funroll-all-loops
  1494.           Perform the optimization of loop  unrolling.   This  is
  1495.           done  for  all  loops.  This usually makes programs run
  1496.           more slowly.
  1497.  
  1498.      -fcse-follow-jumps
  1499.           In common subexpression elimination, scan through  jump
  1500.           instructions in certain cases.  This is not as powerful
  1501.           as completely global CSE, but not as slow either.
  1502.  
  1503.      -frerun-cse-after-loop
  1504.           Re-run common subexpression elimination after loop  op-
  1505.           timizations has been performed.
  1506.  
  1507.      -felide-constructors
  1508.           (C++ only.) Use this option to instruct the compiler to
  1509.  
  1510. GNU Tools            Last change: 27dec1991                    27
  1511.  
  1512. GCC(1)                      GNU Tools                      GCC(1)
  1513.  
  1514.           be  smarter  about  when  it  can  elide  constructors.
  1515.           Without this flag, GNU C++ and cfront both generate ef-
  1516.           fectively the same code for:
  1517.  
  1518.           A foo ();
  1519.           A x (foo ());   // x initialized by `foo ()', no ctor called
  1520.           A y = foo ();   // call to `foo ()' heads to temporary,
  1521.                           // y is initialized from the temporary.
  1522.  
  1523.           Note the difference!  With this flag, GNU C++  initial-
  1524.           izes `y' directly from the call to foo () without going
  1525.           through a temporary.
  1526.  
  1527.      -fexpensive-optimizations
  1528.           Perform a number of minor optimizations that are  rela-
  1529.           tively expensive.
  1530.  
  1531.      -fdelayed-branch
  1532.           If supported for the target machine, attempt to reorder
  1533.           instructions  to  exploit  instruction  slots available
  1534.           after delayed branch instructions.
  1535.  
  1536.      -fschedule-insns
  1537.           If supported for the target machine, attempt to reorder
  1538.           instructions  to  eliminate execution stalls due to re-
  1539.           quired data being  unavailable.   This  helps  machines
  1540.           that  have  slow floating point or memory load instruc-
  1541.           tions by allowing other instructions to be issued until
  1542.           the result of the load or floating point instruction is
  1543.           required.
  1544.  
  1545.      -fschedule-insns2
  1546.           Similar to `-fschedule-insns', but  requests  an  addi-
  1547.           tional  pass  of  instruction scheduling after register
  1548.           allocation has been done.  This is especially useful on
  1549.           machines  with  a  relatively small number of registers
  1550.           and where memory load instructions take more  than  one
  1551.           cycle.
  1552.  
  1553. TARGET OPTIONS
  1554.      By default, GNU CC  compiles  code  for  the  same  type  of
  1555.      machine  that  you  are  using.  However, it can also be in-
  1556.      stalled as a cross-compiler, to compile for some other  type
  1557.      of  machine.   In  fact, several different configurations of
  1558.      GNU CC, for different target machines, can be installed side
  1559.      by  side.   Then  you specify which one to use with the `-b'
  1560.      option.
  1561.  
  1562.      In addition, older and newer versions of GNU CC can  be  in-
  1563.      stalled  side  by  side.   One of them (probably the newest)
  1564.      will be the default, but  you  may  sometimes  wish  to  use
  1565.      another.
  1566.  
  1567. GNU Tools            Last change: 27dec1991                    28
  1568.  
  1569. GCC(1)                      GNU Tools                      GCC(1)
  1570.  
  1571.      -b machine
  1572.            The argument machine specifies the target machine  for
  1573.           compilation.   This  is  useful when you have installed
  1574.           GNU CC as a cross-compiler.
  1575.  
  1576.           The value to use for machine is the same as was  speci-
  1577.           fied  as  the machine type when configuring GNU CC as a
  1578.           cross-compiler.  For example, if a  cross-compiler  was
  1579.           configured  with  `configure i386v', meaning to compile
  1580.           for an 80386 running System V, then you  would  specify
  1581.           `-b i386v' to run that cross compiler.
  1582.  
  1583.           When you do not specify `-b', it normally means to com-
  1584.           pile for the same type of machine that you are using.
  1585.  
  1586.      -V version
  1587.            The argument version specifies which version of GNU CC
  1588.           to  run.  This is useful when multiple versions are in-
  1589.           stalled.  For example, version might be `2.0',  meaning
  1590.           to run GNU CC version 2.0.
  1591.  
  1592.           The default version, when you do not specify  `-V',  is
  1593.           controlled  by  the way GNU CC is installed.  Normally,
  1594.           it will be a version that is  recommended  for  general
  1595.           use.
  1596.  
  1597. MACHINE DEPENDENT OPTIONS
  1598.      Each of the target machine types can have  its  own  special
  1599.      options,   starting  with  `-m',  to  choose  among  various
  1600.      hardware models  or  configurations-for  example,  68010  vs
  1601.      68020,  floating  coprocessor  or  none.  A single installed
  1602.      version of the compiler can compile for any model or  confi-
  1603.      guration, according to the options specified.
  1604.  
  1605.      These are the `-m' options defined for the 68000 series:
  1606.  
  1607.      -m68020
  1608.  
  1609.      -mc68020
  1610.           Generate output for a  68020  (rather  than  a  68000).
  1611.           This is the default if you use the unmodified sources.
  1612.  
  1613.      -m68000
  1614.  
  1615.      -mc68000
  1616.           Generate output for a 68000 (rather than a 68020).
  1617.  
  1618.      -m68881
  1619.           Generate  output  containing  68881  instructions   for
  1620.           floating point.  This is the default if you use the un-
  1621.           modified sources.
  1622.  
  1623. GNU Tools            Last change: 27dec1991                    29
  1624.  
  1625. GCC(1)                      GNU Tools                      GCC(1)
  1626.  
  1627.      -mfpa
  1628.           Generate output containing  Sun  FPA  instructions  for
  1629.           floating point.
  1630.  
  1631.      -msoft-float
  1632.           Generate output containing library calls  for  floating
  1633.           point.   WARNING:  the requisite libraries are not part
  1634.           of GNU CC.  Normally the facilities  of  the  machine's
  1635.           usual  C  compiler  are  used,  but  this can't be done
  1636.           directly in cross-compilation.  You must make your  own
  1637.           arrangements  to provide suitable library functions for
  1638.           cross-compilation.
  1639.  
  1640.      -mshort
  1641.           Consider type int to be 16 bits wide, like short int.
  1642.  
  1643.      -mnobitfield
  1644.           Do not use the bit-field instructions.   `-m68000'  im-
  1645.           plies `-mnobitfield'.
  1646.  
  1647.      -mbitfield
  1648.           Do use the bit-field instructions.   `-m68020'  implies
  1649.           `-mbitfield'.  This is the default if you use the unmo-
  1650.           dified sources.
  1651.  
  1652.      -mrtd
  1653.           Use a different function-calling convention,  in  which
  1654.           functions  that take a fixed number of arguments return
  1655.           with the rtd instruction, which  pops  their  arguments
  1656.           while  returning.   This  saves  one instruction in the
  1657.           caller since there is no  need  to  pop  the  arguments
  1658.           there.
  1659.  
  1660.           This calling convention is incompatible  with  the  one
  1661.           normally used on Unix, so you cannot use it if you need
  1662.           to call libraries compiled with the Unix compiler.
  1663.  
  1664.           Also, you must  provide  function  prototypes  for  all
  1665.           functions  that take variable numbers of arguments (in-
  1666.           cluding printf); otherwise incorrect code will be  gen-
  1667.           erated for calls to those functions.
  1668.  
  1669.           In addition, seriously incorrect code  will  result  if
  1670.           you  call a function with too many arguments.  (Normal-
  1671.           ly, extra arguments are harmlessly ignored.)
  1672.  
  1673.           The rtd instruction is supported by the 68010 and 68020
  1674.           processors, but not by the 68000.
  1675.  
  1676.      These `-m' options are defined for the Vax:
  1677.  
  1678.      -munix
  1679.  
  1680. GNU Tools            Last change: 27dec1991                    30
  1681.  
  1682. GCC(1)                      GNU Tools                      GCC(1)
  1683.  
  1684.           Do not output certain jump instructions (aobleq and  so
  1685.           on)  that  the Unix assembler for the Vax cannot handle
  1686.           across long ranges.
  1687.  
  1688.      -mgnu
  1689.           Do output those jump instructions,  on  the  assumption
  1690.           that you will assemble with the GNU assembler.
  1691.  
  1692.      -mg  Output code for g-format floating point numbers instead
  1693.           of d-format.
  1694.  
  1695.      These `-m' switches are supported on the Sparc:
  1696.  
  1697.      -mfpu
  1698.           Generate output containing floating point instructions.
  1699.           This is the default if you use the unmodified sources.
  1700.  
  1701.      -mno-epilogue
  1702.           Generate separate return instructions for return state-
  1703.           ments.   This  has both advantages and disadvantages; I
  1704.           don't recall what they are.
  1705.  
  1706.      These `-m' options are defined for the Convex:
  1707.  
  1708.      -mc1 Generate output for a C1.  This is the default when the
  1709.           compiler is configured for a C1.
  1710.  
  1711.      -mc2 Generate output for a C2.  This is the default when the
  1712.           compiler is configured for a C2.
  1713.  
  1714.      -margcount
  1715.           Generate code which puts an argument count in the  word
  1716.           preceding  each argument list.  Some nonportable Convex
  1717.           and Vax programs need this word.  (Debuggers don't, ex-
  1718.           cept for functions with variable-length argument lists;
  1719.           this info is in the symbol table.)
  1720.  
  1721.      -mnoargcount
  1722.           Omit the argument count word.  This is the  default  if
  1723.           you use the unmodified sources.
  1724.  
  1725.      These `-m' options are defined for the AMD Am29000:
  1726.  
  1727.      -mdw Generate code that assumes the DW  bit  is  set,  i.e.,
  1728.           that byte and halfword operations are directly support-
  1729.           ed by the hardware.  This is the default.
  1730.  
  1731.      -mnodw
  1732.           Generate code that assumes the DW bit is not set.
  1733.  
  1734.      -mbw Generate code that assumes the system supports byte and
  1735.           halfword write operations.  This is the default.
  1736.  
  1737. GNU Tools            Last change: 27dec1991                    31
  1738.  
  1739. GCC(1)                      GNU Tools                      GCC(1)
  1740.  
  1741.      -mnbw
  1742.           Generate code that assumes the systems does not support
  1743.           byte  and  halfword  write  operations.   This  implies
  1744.           `-mnodw'.
  1745.  
  1746.      -msmall
  1747.           Use a small memory model that assumes that all function
  1748.           addresses  are either within a single 256 KB segment or
  1749.           at an absolute address of less than 256K.  This  allows
  1750.           the  call  instruction  to  be used instead of a const,
  1751.           consth, calli sequence.
  1752.  
  1753.      -mlarge
  1754.           Do not assume that the call instruction  can  be  used;
  1755.           this is the default.
  1756.  
  1757.      -m29050
  1758.           Generate code for the Am29050.
  1759.  
  1760.      -m29000
  1761.           Generate code for the Am29000.  This is the default.
  1762.  
  1763.      -mkernel-registers
  1764.           Generate references to registers gr64-gr95  instead  of
  1765.           gr96-gr127.   This  option  can  be used when compiling
  1766.           kernel code that wants a set of global  registers  dis-
  1767.           joint from that used by user-mode code.
  1768.  
  1769.           Note that when this option is used, register  names  in
  1770.           `-f' flags must use the normal, user-mode, names.
  1771.  
  1772.      -muser-registers
  1773.           Use the normal set  of  global  registers,  gr96-gr127.
  1774.           This is the default.
  1775.  
  1776.      -mstack-check
  1777.           Insert a call to __msp_check after each  stack  adjust-
  1778.           ment.  This is often used for kernel code.
  1779.  
  1780.      These `-m' options are defined for  Motorola  88K  architec-
  1781.      tures:
  1782.  
  1783.      -mbig-pic
  1784.           Emit position-independent code,  suitable  for  dynamic
  1785.           linking,  even  if  branches  need large displacements.
  1786.           Equivalent to  the  general-use  option  `-fPIC'.   The
  1787.           general-use  option  `-fpic',  by  contrast, only emits
  1788.           valid 88k code if all branches involve small  displace-
  1789.           ments.  GCC  does not emit position-independent code by
  1790.           default.
  1791.  
  1792.      -midentify-revision
  1793.  
  1794. GNU Tools            Last change: 27dec1991                    32
  1795.  
  1796. GCC(1)                      GNU Tools                      GCC(1)
  1797.  
  1798.           Include an ident  directive  in  the  assembler  output
  1799.           recording  the source file name, compiler name and ver-
  1800.           sion, timestamp, and compilation flags used.
  1801.  
  1802.      -mno-underscores
  1803.           In assembler output, emit symbol names  without  adding
  1804.           an  underscore character at the beginning of each name.
  1805.           The default is to use an underscore as prefix  on  each
  1806.           name.
  1807.  
  1808.      -mno-check-zero-division
  1809.  
  1810.      -mcheck-zero-division
  1811.           Early models of the 88K architecture had problems  with
  1812.           division  by  zero;  in particular, many of them didn't
  1813.           trap.  Use these options to avoid including (or to  in-
  1814.           clude explicitly) additional code to detect division by
  1815.           zero and signal an exception.  All  GCC  configurations
  1816.           for the 88K use `-mcheck-zero-division' by default.
  1817.  
  1818.      -mocs-debug-info
  1819.  
  1820.      -mno-ocs-debug-info
  1821.           Include  (or  omit)  additional  debugging  information
  1822.           (about registers used in each stack frame) as specified
  1823.           in the 88Open Object Compatibility  Standard,  ``OCS''.
  1824.           This  extra  information is not needed by GDB.  The de-
  1825.           fault for DG/UX, SVr4, and Delta 88 SVr3.2  is  to  in-
  1826.           clude  this  information; other 88k configurations omit
  1827.           this information by default.
  1828.  
  1829.      -mocs-frame-position
  1830.  
  1831.      -mno-ocs-frame-position
  1832.           Force (or do not require) register values to be  stored
  1833.           in  a particular place in stack frames, as specified in
  1834.           OCS.  The DG/UX, Delta88 SVr3.2, and BCS configurations
  1835.           use  `-mocs-frame-position';  other  88k configurations
  1836.           have the default `-mno-ocs-frame-position'.
  1837.  
  1838.      -moptimize-arg-area
  1839.  
  1840.      -mno-optimize-arg-area
  1841.           Control  how  to  store  function  arguments  in  stack
  1842.           frames.   `-moptimize-arg-area'  saves  space,  but may
  1843.           break       some       debuggers       (not       GDB).
  1844.           `-mno-optimize-arg-area'  conforms better to standards.
  1845.           By default GCC does not optimize the argument area.
  1846.  
  1847.      -mshort-data-num
  1848.            num Generate smaller data references  by  making  them
  1849.           relative  to  r0,  which allows loading a value using a
  1850.  
  1851. GNU Tools            Last change: 27dec1991                    33
  1852.  
  1853. GCC(1)                      GNU Tools                      GCC(1)
  1854.  
  1855.           single instruction (rather than the  usual  two).   You
  1856.           control  which data references are affected by specify-
  1857.           ing num with this option.  For example, if you  specify
  1858.           `-mshort-data-512',  then  the data references affected
  1859.           are those involving  displacements  of  less  than  512
  1860.           bytes.   `-mshort-data-num'  is  not  effective for num
  1861.           greater than 64K.
  1862.  
  1863.      -msvr4
  1864.  
  1865.      -msvr3
  1866.           Turn on (`-msvr4') or off  (`-msvr3')  compiler  exten-
  1867.           sions  related to System V release 4 (SVr4).  This con-
  1868.           trols the following:
  1869.  
  1870.          Which variant of the assembler syntax  to  emit  (which
  1871.           you can select independently using `-mversion03.00').
  1872.  
  1873.          `-msvr4' makes the C  preprocessor  recognize  `#pragma
  1874.           weak'
  1875.  
  1876.          `-msvr4' makes GCC issue additional declaration  direc-
  1877.           tives used in SVr4.
  1878.  
  1879.      `-msvr3' is the default for all m88K  configurations  except
  1880.      the SVr4 configuration.
  1881.  
  1882.      -mtrap-large-shift
  1883.  
  1884.      -mhandle-large-shift
  1885.           Include code to detect bit-shifts of more than 31 bits;
  1886.           respectively,  trap  such shifts or emit code to handle
  1887.           them properly.  By default GCC makes no special  provi-
  1888.           sion for large bit shifts.
  1889.  
  1890.      -muse-div-instruction
  1891.           Very early models of the 88K architecture didn't have a
  1892.           divide  instruction,  so GCC avoids that instruction by
  1893.           default.  Use this option to specify that it's safe  to
  1894.           use the divide instruction.
  1895.  
  1896.      -mversion-03.00
  1897.           Use alternative assembler syntax for the assembler ver-
  1898.           sion  corresponding  to  SVr4, but without enabling the
  1899.           other features triggered by `-svr4'.  This  is  implied
  1900.           by  `-svr4',  is the default for the SVr4 configuration
  1901.           of GCC, and is permitted  by  the  DG/UX  configuration
  1902.           only if `-svr4' is also specified.  The Delta 88 SVr3.2
  1903.           configuration ignores this option.
  1904.  
  1905.      -mwarn-passed-structs
  1906.           Warn when a function passes a struct as an argument  or
  1907.  
  1908. GNU Tools            Last change: 27dec1991                    34
  1909.  
  1910. GCC(1)                      GNU Tools                      GCC(1)
  1911.  
  1912.           result.   Structure-passing  conventions  have  changed
  1913.           during the evolution of the C language, and  are  often
  1914.           the  source  of  portability problems.  By default, GCC
  1915.           issues no such warning.
  1916.  
  1917.      These options are defined for the IBM RS6000:
  1918.  
  1919.      -mfp-in-toc
  1920.  
  1921.      -mno-fp-in-toc
  1922.           Control whether or not floating-point constants  go  in
  1923.           the  Table  of  Contents  (TOC),  a table of all global
  1924.           variable and function addresses.  By default  GCC  puts
  1925.           floating-point  constants  there; if the TOC overflows,
  1926.           `-mno-fp-in-toc' will reduce the size of the TOC, which
  1927.           may avoid the overflow.
  1928.  
  1929.      These `-m' options are defined for the IBM RT PC:
  1930.  
  1931.      -min-line-mul
  1932.           Use an in-line code sequence  for  integer  multiplies.
  1933.           This is the default.
  1934.  
  1935.      -mcall-lib-mul
  1936.           Call lmul$$ for integer multiples.
  1937.  
  1938.      -mfull-fp-blocks
  1939.           Generate full-size floating point data blocks,  includ-
  1940.           ing  the minimum amount of scratch space recommended by
  1941.           IBM.  This is the default.
  1942.  
  1943.      -mminimum-fp-blocks
  1944.           Do not include extra scratch space  in  floating  point
  1945.           data  blocks.  This results in smaller code, but slower
  1946.           execution, since scratch space must be allocated dynam-
  1947.           ically.
  1948.  
  1949.      -mfp-arg-in-fpregs
  1950.           Use a calling sequence incompatible with the  IBM  cal-
  1951.           ling  convention  in which floating point arguments are
  1952.           passed  in  floating  point   registers.    Note   that
  1953.           varargs.h  and  stdargs.h  will  not work with floating
  1954.           point operands if this option is specified.
  1955.  
  1956.      -mfp-arg-in-gregs
  1957.           Use the normal calling convention  for  floating  point
  1958.           arguments.  This is the default.
  1959.  
  1960.      -mhc-struct-return
  1961.           Return structures of more  than  one  word  in  memory,
  1962.  
  1963. GNU Tools            Last change: 27dec1991                    35
  1964.  
  1965. GCC(1)                      GNU Tools                      GCC(1)
  1966.  
  1967.           rather than in a register.  This provides compatibility
  1968.           with   the   MetaWare   HighC   (hc)   compiler.    Use
  1969.           `-fpcc-struct-return'  for compatibility with the Port-
  1970.           able C Compiler (pcc).
  1971.  
  1972.      -mnohc-struct-return
  1973.           Return some structures of more than one word in  regis-
  1974.           ters,  when convenient.  This is the default.  For com-
  1975.           patibility with the IBM-supplied compilers, use  either
  1976.           `-fpcc-struct-return' or `-mhc-struct-return'.
  1977.  
  1978.      These `-m' options are defined for the MIPS family  of  com-
  1979.      puters:
  1980.  
  1981.      -mcpu=cpu-type
  1982.           Assume the defaults for the machine type cpu-type  when
  1983.           scheduling  insturctions.   The default cpu-type is de-
  1984.           fault, which picks the longest cycles times for any  of
  1985.           the  machines, in order that the code run at reasonable
  1986.           rates on all MIPS cpu's.  Other  choices  for  cpu-type
  1987.           are  r2000,  r3000,  r4000, and r6000.  While picking a
  1988.           specific cpu-type will  schedule  things  appropriately
  1989.           for  that  particular  chip, the compiler will not gen-
  1990.           erate any code that does not meet level 1 of  the  MIPS
  1991.           ISA  (instruction  set architecture) without the -mips2
  1992.           or -mips3 switches being used.
  1993.  
  1994.      -mips2
  1995.           Issue instructions from level 2 of the MIPS ISA (branch
  1996.           likely,  square root instructions).  The -mcpu=r4000 or
  1997.           -mcpu=r6000 switch must  be  used  in  conjuction  with
  1998.           -mips2.
  1999.  
  2000.      -mips3
  2001.           Issue instructions from level 3 of the MIPS ISA (64 bit
  2002.           instructions).   The -mcpu=r4000 switch must be used in
  2003.           conjuction with -mips2.
  2004.  
  2005.      -mint64
  2006.  
  2007.      -mlong64
  2008.  
  2009.      -mlonglong128
  2010.           These options don't work at present.
  2011.  
  2012.      -mmips-as
  2013.           Generate  code  for  the  MIPS  assembler,  and  invoke
  2014.           mips-tfile  to  add  normal debug information.  This is
  2015.           the default for all  platforms  except  for  the  OSF/1
  2016.           reference  platform,  using the OSF/rose object format.
  2017.           If the any of the -ggdb, -gstabs, or -gstabs+  switches
  2018.           are  used,  the mips-tfile program will encapsulate the
  2019.  
  2020. GNU Tools            Last change: 27dec1991                    36
  2021.  
  2022. GCC(1)                      GNU Tools                      GCC(1)
  2023.  
  2024.           stabs within MIPS ECOFF.
  2025.  
  2026.      -mgas
  2027.           Generate code for the GNU assembler.  This is  the  de-
  2028.           fault  on  the  OSF/1  reference  platform,  using  the
  2029.           OSF/rose object format.
  2030.  
  2031.      -mrnames
  2032.  
  2033.      -mno-rnames
  2034.           The -mrnames switch says to output code using the  MIPS
  2035.           software  names  for  the  registers,  instead  of  the
  2036.           hardware names (ie, a0 instead of $4).  The GNU  assem-
  2037.           bler does not support the -mrnames switch, and the MIPS
  2038.           assembler will be instructed to run the MIPS C  prepro-
  2039.           cessor over the source file.  The -mno-rnames switch is
  2040.           default.
  2041.  
  2042.      -mgpopt
  2043.  
  2044.      -mno-gpopt
  2045.           The -mgpopt switch says to write all of  the  data  de-
  2046.           clarations before the instructions in the text section,
  2047.           to all the MIPS assembler to generate one  word  memory
  2048.           references  instead of using two words for short global
  2049.           or static data items.  This is on by default if optimi-
  2050.           zation is selected.
  2051.  
  2052.      -mstats
  2053.  
  2054.      -mno-stats
  2055.           For each non-inline  function  processed,  the  -mstats
  2056.           switch  causes  the  compiler  to  emit one line to the
  2057.           standard error file to print statistics about the  pro-
  2058.           gram (number of registers saved, stack size, etc.).
  2059.  
  2060.      -mmemcpy
  2061.  
  2062.      -mno-memcpy
  2063.           The -mmemcpy switch makes all block moves call the  ap-
  2064.           propriate  string function (memcpy or bcopy) instead of
  2065.           possibly generating inline code.
  2066.  
  2067.      -mmips-tfile
  2068.  
  2069.      -mno-mips-tfile
  2070.           The -mno-mips-tfile  switch  causes  the  compiler  not
  2071.           postprocess  the  object  file with the mips-tfile pro-
  2072.           gram, after the MIPS assembler has generated it to  add
  2073.           debug support.  If mips-tfile is not run, then no local
  2074.           variables will be available to the debugger.  In  addi-
  2075.           tion, stage2 and stage3 objects will have the temporary
  2076.  
  2077. GNU Tools            Last change: 27dec1991                    37
  2078.  
  2079. GCC(1)                      GNU Tools                      GCC(1)
  2080.  
  2081.           file names passed to the assembler embedded in the  ob-
  2082.           ject file, which means the objects will not compare the
  2083.           same.
  2084.  
  2085.      -msoft-float
  2086.           Generate output containing library calls  for  floating
  2087.           point.   WARNING:  the requisite libraries are not part
  2088.           of GNU CC.  Normally the facilities  of  the  machine's
  2089.           usual  C  compiler  are  used,  but  this can't be done
  2090.           directly in cross-compilation.  You must make your  own
  2091.           arrangements  to provide suitable library functions for
  2092.           cross-compilation.
  2093.  
  2094.      -mhard-float
  2095.           Generate output containing floating point instructions.
  2096.           This is the default if you use the unmodified sources.
  2097.  
  2098.      -mfp64
  2099.           Assume that the FR bit in the status word  is  on,  and
  2100.           that  there are 32 64-bit floating point registers, in-
  2101.           stead of 32 32-bit floating point registers.  You  must
  2102.           also specify the -mcpu=r4000 and -mips3 switches.
  2103.  
  2104.      -mfp32
  2105.           Assume that there are 32 32-bit floating  point  regis-
  2106.           ters.  This is the default.
  2107.  
  2108.      -mabicalls
  2109.           The -mabicalls  switch  says  to  emit  the  .abicalls,
  2110.           .cpload,  and  .cprestore  pseudo  operations that some
  2111.           System V.4 ports use for position independent code.
  2112.  
  2113.      -mhalf-pic
  2114.  
  2115.      -mno-half-pic
  2116.           The -mhalf-pic switch says to put  pointers  to  extern
  2117.           references  into  the  data  section  and load them up,
  2118.           rather than put the references  in  the  text  section.
  2119.           This option does not work at present.  -Gnum Put global
  2120.           and static items less than or equal to num  bytes  into
  2121.           the  small  data  or bss sections instead of the normal
  2122.           data or bss section.  This allows the assembler to emit
  2123.           one  word  memory  reference  instructions based on the
  2124.           global pointer (gp or $28), instead of the  normal  two
  2125.           words  used.  By default, num is 8 when the MIPS assem-
  2126.           bler is used, and 0 when the  GNU  assembler  is  used.
  2127.           The  -Gnum  switch  is also passed to the assembler and
  2128.           linker.  All modules should be compiled with  the  same
  2129.           -Gnum value.
  2130.  
  2131. CODE GENERATION OPTIONS
  2132.      These machine-independent options control the interface con-
  2133.  
  2134. GNU Tools            Last change: 27dec1991                    38
  2135.  
  2136. GCC(1)                      GNU Tools                      GCC(1)
  2137.  
  2138.      ventions used in code generation.
  2139.  
  2140.      Most of them begin with `-f'.  These options have both posi-
  2141.      tive  and negative forms; the negative form of `-ffoo' would
  2142.      be `-fno-foo'.  In the table below, only one of the forms is
  2143.      listed-the one which is not the default.  You can figure out
  2144.      the other form by either removing `no-' or adding it.
  2145.  
  2146.      +eN  (C++ only.) control whether  virtual  function  defini-
  2147.           tions  in classes are used to generate code, or only to
  2148.           define interfaces for their callers.  These options are
  2149.           provided  for  compatibility with cfront 1.x usage; the
  2150.           recommended GNU C++ usage is to use  #pragma  interface
  2151.           and #pragma implementation, instead.
  2152.  
  2153.           With `+e0', virtual function definitions in classes are
  2154.           declared extern; the declaration is used only as an in-
  2155.           terface specification, not to  generate  code  for  the
  2156.           virtual functions (in this compilation).
  2157.  
  2158.           With `+e1', g++ actually generates the code  implement-
  2159.           ing  virtual  functions  defined in the code, and makes
  2160.           them publicly visible.
  2161.  
  2162.      -fnonnull-objects
  2163.           (C++ only.) Normally, GNU C++  makes  conservative  as-
  2164.           sumptions  about  objects  reached  through references.
  2165.           For example, the compiler must check that  `a'  is  not
  2166.           null in code like the following:
  2167.               obj &a = g ();
  2168.               a.f (2);
  2169.           Checking that references of  this  sort  have  non-null
  2170.           values requires extra code, however, and it is unneces-
  2171.           sary    for    many    programs.     You    can     use
  2172.           `-fnonnull-objects'  to  omit  the  checks for null, if
  2173.           your program doesn't require the default checking.
  2174.  
  2175.      -fpcc-struct-return
  2176.           Use the same convention for returning struct and  union
  2177.           values  that  is  used  by the usual C compiler on your
  2178.           system.  This convention is less  efficient  for  small
  2179.           structures,  and  on many machines it fails to be reen-
  2180.           trant; but it has the advantage of allowing intercalla-
  2181.           bility between GCC-compiled code and PCC-compiled code.
  2182.  
  2183.      -fshort-enums
  2184.           Allocate to an enum type only as many bytes as it needs
  2185.           for the declared range of possible values.  Specifical-
  2186.           ly, the enum type will be equivalent  to  the  smallest
  2187.           integer type which has enough room.
  2188.  
  2189.      -fshort-double
  2190.  
  2191. GNU Tools            Last change: 27dec1991                    39
  2192.  
  2193. GCC(1)                      GNU Tools                      GCC(1)
  2194.  
  2195.           Use the same size for double as for float .
  2196.  
  2197.      -fshared-data
  2198.           Requests that the data and non-const variables of  this
  2199.           compilation  be  shared  data rather than private data.
  2200.           The distinction makes sense only on  certain  operating
  2201.           systems,  where shared data is shared between processes
  2202.           running the same program, while private data exists  in
  2203.           one copy per process.
  2204.  
  2205.      -fno-common
  2206.           Allocate even uninitialized global variables in the bss
  2207.           section of the object file, rather than generating them
  2208.           as common blocks.  This has the effect that if the same
  2209.           variable  is declared (without extern) in two different
  2210.           compilations, you will get an error when you link them.
  2211.           The  only reason this might be useful is if you wish to
  2212.           verify that the program  will  work  on  other  systems
  2213.           which always work this way.
  2214.  
  2215.      -fvolatile
  2216.           Consider all memory references through pointers  to  be
  2217.           volatile.
  2218.  
  2219.      -fpic
  2220.           If  supported  for  the   target   machines,   generate
  2221.           position-independent code, suitable for use in a shared
  2222.           library.
  2223.  
  2224.      -fPIC
  2225.           If supported for the  target  machine,  emit  position-
  2226.           independent code, suitable for dynamic linking, even if
  2227.           branches need large displacements.
  2228.  
  2229.      -ffixed-reg
  2230.            Treat the register named reg as a fixed register; gen-
  2231.           erated code should never refer to it (except perhaps as
  2232.           a stack pointer, frame pointer or in some  other  fixed
  2233.           role).
  2234.  
  2235.           reg must be the name of a register.  The register names
  2236.           accepted  are  machine-specific  and are defined in the
  2237.           REGISTER_NAMES macro in the machine  description  macro
  2238.           file.
  2239.  
  2240.           This flag does not have a  negative  form,  because  it
  2241.           specifies a three-way choice.
  2242.  
  2243.      -fcall-used-reg
  2244.            Treat the register named reg as an allocatable  regis-
  2245.           ter that is clobbered by function calls.  It may be al-
  2246.           located for temporaries or variables that do  not  live
  2247.  
  2248. GNU Tools            Last change: 27dec1991                    40
  2249.  
  2250. GCC(1)                      GNU Tools                      GCC(1)
  2251.  
  2252.           across  a  call.   Functions compiled this way will not
  2253.           save and restore the register reg.
  2254.  
  2255.           Use of this flag for a register that has a  fixed  per-
  2256.           vasive  role  in the machine's execution model, such as
  2257.           the stack pointer or frame pointer, will produce disas-
  2258.           trous results.
  2259.  
  2260.           This flag does not have a  negative  form,  because  it
  2261.           specifies a three-way choice.
  2262.  
  2263.      -fcall-saved-reg
  2264.            Treat the register named reg as an allocatable  regis-
  2265.           ter  saved  by functions.  It may be allocated even for
  2266.           temporaries or  variables  that  live  across  a  call.
  2267.           Functions  compiled  this way will save and restore the
  2268.           register reg if they use it.
  2269.  
  2270.           Use of this flag for a register that has a  fixed  per-
  2271.           vasive  role  in the machine's execution model, such as
  2272.           the stack pointer or frame pointer, will produce disas-
  2273.           trous results.
  2274.  
  2275.           A different sort of disaster will result from  the  use
  2276.           of  this  flag  for a register in which function values
  2277.           may be returned.
  2278.  
  2279.           This flag does not have a  negative  form,  because  it
  2280.           specifies a three-way choice.
  2281.  
  2282.      -fgnu-binutils
  2283.  
  2284.      -fno-gnu-binutils
  2285.           (C++ only.) `-fgnu-binutils ' (the  default  for  most,
  2286.           but not all, platforms) makes GNU C++ emit extra infor-
  2287.           mation  for  static  initialization  and  finalization.
  2288.           This information has to be passed from the assembler to
  2289.           the GNU linker.  Some assemblers won't pass this infor-
  2290.           mation;  you  must either use GNU as or specify the op-
  2291.           tion `-fno-gnu-binutils'.
  2292.  
  2293.           With `-fno-gnu-binutils', you must use the program col-
  2294.           lect (part of the GCC distribution) for linking.
  2295.  
  2296. PRAGMAS
  2297.      Two `#pragma' directives are supported for GNU C++, to  per-
  2298.      mit using the same header file for two purposes: as a defin-
  2299.      ition of interfaces to a given object class, and as the full
  2300.      definition of the contents of that object class.
  2301.  
  2302.      #pragma interface
  2303.           (C++ only.) Use this directive in header files that de-
  2304.  
  2305. GNU Tools            Last change: 27dec1991                    41
  2306.  
  2307. GCC(1)                      GNU Tools                      GCC(1)
  2308.  
  2309.           fine  object  classes, to save space in most of the ob-
  2310.           ject files that use  those  classes.   Normally,  local
  2311.           copies  of certain information (backup copies of inline
  2312.           member functions, debugging information, and the inter-
  2313.           nal  tables  that  implement virtual functions) must be
  2314.           kept in each object file that  includes  class  defini-
  2315.           tions.   You can use this pragma to avoid such duplica-
  2316.           tion.  When a header file  containing  `#pragma  inter-
  2317.           face'  is included in a compilation, this auxiliary in-
  2318.           formation will not be generated (unless the main  input
  2319.           source file itself uses `#pragma implementation').  In-
  2320.           stead, the object files will contain references  to  be
  2321.           resolved at link time.
  2322.  
  2323.      #pragma implementation
  2324.  
  2325.      #pragma implementation "objects.h"
  2326.           (C++ only.) Use this pragma in a main input file,  when
  2327.           you  want  full output from included header files to be
  2328.           generated (and made globally  visible).   The  included
  2329.           header  file,  in turn, should use `#pragma interface'.
  2330.           Backup copies of inline member functions, debugging in-
  2331.           formation,  and  the  internal tables used to implement
  2332.           virtual functions are all generated  in  implementation
  2333.           files.
  2334.  
  2335.           If you use `#pragma implementation' with  no  argument,
  2336.           it applies to an include file with the same basename as
  2337.           your  source  file;  for  example,  in   `allclass.cc',
  2338.           `#pragma  implementation'  by  itself  is equivalent to
  2339.           `#pragma implementation "allclass.h"'.  Use the  string
  2340.           argument  if  you  want a single implementation file to
  2341.           include code from multiple header files.
  2342.  
  2343.           There is no way to split up the contents  of  a  single
  2344.           header file into multiple implementation files.
  2345.  
  2346. FILES
  2347.      file.c             C source file
  2348.      file.h             C header (preprocessor) file
  2349.      file.i             preprocessed C source file
  2350.      file.C             C++ source file
  2351.      file.cc            C++ source file
  2352.      file.cxx           C++ source file
  2353.      file.m             Objective-C source file
  2354.      file.s             assembly language file
  2355.      file.o             object file
  2356.      a.out              link edited output
  2357.      TMPDIR/cc*         temporary files
  2358.      LIBDIR/cpp         preprocessor
  2359.      LIBDIR/cc1         compiler for C
  2360.      LIBDIR/cc1plus     compiler for C++
  2361.  
  2362. GNU Tools            Last change: 27dec1991                    42
  2363.  
  2364. GCC(1)                      GNU Tools                      GCC(1)
  2365.  
  2366.      LIBDIR/collect     linker front end needed on some machines
  2367.      LIBDIR/libgcc.a    GCC subroutine library
  2368.      /lib/crt[01n].o    start-up routine
  2369.      LIBDIR/ccrt0       additional start-up routine for C++
  2370.      /lib/libc.a        standard C library, see intro(3)
  2371.      /usr/include       standard directory for #include files
  2372.      LIBDIR/include     standard gcc directory for #include files
  2373.      LIBDIR/g++-include additional g++ directory for #include
  2374.  
  2375.      LIBDIR is usually /usr/local/lib/machine/version.
  2376.      TMPDIR comes from the environment variable  TMPDIR  (default
  2377.      /usr/tmp if available, else /tmp).
  2378.  
  2379. SEE ALSO
  2380.      cpp(1), as(1), ld(1), gdb(1), adb(1), dbx(1), sdb(1).
  2381.      `gcc', `cpp', `as',`ld', and `gdb' entries in info.
  2382.      Using and Porting GNU  CC  (for  version  2.0),  Richard  M.
  2383.      Stallman,  November  1990;  The  C  Preprocessor, Richard M.
  2384.      Stallman, July 1990; Using GDB: A Guide to the  GNU  Source-
  2385.      Level Debugger, Richard M. Stallman and Roland H. Pesch, De-
  2386.      cember 1991; Using as: the GNU Assembler, Dean  Elsner,  Jay
  2387.      Fenlason  &  friends, March 1991; gld: the GNU linker, Steve
  2388.      Chamberlain and Roland Pesch, April 1991.
  2389.  
  2390. BUGS
  2391.      Report bugs to bug-gcc@prep.ai.mit.edu.  Bugs tend  actually
  2392.      to  be  fixed  if they can be isolated, so it is in your in-
  2393.      terest to report them in such a way that they can be  easily
  2394.      reproduced.
  2395.  
  2396. COPYING
  2397.      Copyright (c) 1991 Free Software Foundation, Inc.
  2398.  
  2399.      Permission is granted to make and distribute verbatim copies
  2400.      of  this  manual provided the copyright notice and this per-
  2401.      mission notice are preserved on all copies.
  2402.  
  2403.      Permission is granted to copy and distribute  modified  ver-
  2404.      sions of this manual under the conditions for verbatim copy-
  2405.      ing, provided that the entire resulting derived work is dis-
  2406.      tributed under the terms of a permission notice identical to
  2407.      this one.
  2408.  
  2409.      Permission is granted to copy and distribute translations of
  2410.      this  manual  into  another language, under the above condi-
  2411.      tions for modified versions, except that this permission no-
  2412.      tice  may  be  included in translations approved by the Free
  2413.      Software Foundation instead of in the original English.
  2414.  
  2415. AUTHORS
  2416.      See the GNU CC Manual for the contributors to GNU CC.
  2417.  
  2418. GNU Tools            Last change: 27dec1991                    43
  2419.  
  2420.